﻿//默认校验规则
//(1)required:true               必输字段
//(2)remote:"check.php"          使用ajax方法调用check.php验证输入值
//(3)email:true                  必须输入正确格式的电子邮件
//(4)url:true                    必须输入正确格式的网址
//(5)date:true                   必须输入正确格式的日期 日期校验ie6出错，慎用
//(6)dateISO:true                必须输入正确格式的日期(ISO)，例如：2009-06-23，1998/01/22 只验证格式，不验证有效性
//(7)number:true                 必须输入合法的数字(负数，小数)
//(8)digits:true                 必须输入整数
//(9)creditcard:                 必须输入合法的信用卡号
//(10)equalTo:"#field"           输入值必须和#field相同
//(11)accept:                    输入拥有合法后缀名的字符串（上传文件的后缀）
//(12)maxlength:5                输入长度最多是5的字符串(汉字算一个字符)
//(13)minlength:10               输入长度最小是10的字符串(汉字算一个字符)
//(14)rangelength:[5,10]         输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)
//(15)range:[5,10]               输入值必须介于 5 和 10 之间
//(16)max:5                      输入值不能大于5
//(17)min:10                     输入值不能小于10


//自定义规则
(function ($)
{
    $.validator.addMethod(
            "notnull",
            function (value, element)
            {
                if (!value) return true;
                return !$(element).hasClass("l-text-field-null");
            },
            "不能为空"
    );
    //数字
    jQuery.validator.addMethod("nums", function (value, element)
    {
       return this.optional(element) || /^[0-9]*$/g.test(value);
    }, "只能为数字");
    
    //班级名称验证是否重复
    jQuery.validator.addMethod("dupClassName", function (value, element){
    	var flag = 1;
    	$.ajax({  
            url: basepath+"classController/checkClassIsRegister.do",  
            data:{bj:value,bh:this.currentForm.bh.value,bssnjdh:this.currentForm.bssnjdh.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1")  
                	flag = 0;  
            }
        }); 
    	return flag == 1 ? true:false;
    },'班级名称已存在！');
    
    //学校名称验证是否重复
    jQuery.validator.addMethod("dupSchoolName", function (value, element){
    	var flag = 1;
    	$.ajax({  
            url: basepath+"schoolController/checkSchoolIsRegister.do",  
            data:{xxmc:value,bh:this.currentForm.bh.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1")  
                	flag = 0;  
            }
        }); 
    	return flag == 1 ? true:false;
    },'学校名称已存在！');
    
    //年级名称验证是否重复
    jQuery.validator.addMethod("dupGradeName", function (value, element){
    	var flag = 1;
    	$.ajax({  
            url: basepath+"gradeController/checkGradeIsRegister.do",  
            data:{njmc:value,bh:this.currentForm.bh.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1")  
                	flag = 0;  
            }
        }); 
    	return flag == 1 ? true:false;
    },'年级名称已存在！');
    //验证班在级中的序号是否存在
    jQuery.validator.addMethod("dupBJXH", function (value, element){
    	var flag = 1;
    	$.ajax({  
            url: basepath+"classController/checkIsBJExist.do",  
            data:{bssnjdh:this.currentForm.ssnj.value,bjxh:value,bh:this.currentForm.oldBh.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1")  
                	flag = 0;  
            }
        }); 
    	return flag == 1 ? true:false;
    },'班在级中的序号已经存在！');
    //验证班级数目是否大于当前库中班级数
    jQuery.validator.addMethod("dupBJSM", function (value, element){
    	var flag = 1;
    	$.ajax({  
            url: basepath+"gradeController/getCurrentBJSM.do",  
            data:{bjsm:value,bh:this.currentForm.bh.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {
                if(data == "1")  
                	flag = 0;  
            }
        }); 
    	return flag == 1 ? true:false;
    },'班级数目不能小于当前班级总数！');
    //年级排序验证是否重复
    jQuery.validator.addMethod("dupGradeSort", function (value, element){
    	var flag = 1;
    	$.ajax({  
            url: basepath+"gradeController/checkNJPXIsExist.do",  
            data:{njpx:value,bh:this.currentForm.bh.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1")  
                	flag = 0;  
            }
        }); 
    	return flag == 1 ? true:false;
    },'年级排序不能重复！');
    //是否毕业班验证
    jQuery.validator.addMethod("dupIsUpdated", function (value, element){
    	var flag = 1;
    	var testValue = 0;
    	if(value == "是"){
    		testValue = 1; 
    	}else{
    		testValue = 0;
    	}
    	$.ajax({  
            url: basepath+"gradeController/checkIsUpdated.do",  
            data:{sfbyb:testValue,bh:this.currentForm.oldBH.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1")  
                	flag = 0;  
            }
        }); 
    	return flag == 1 ? true:false;
    },'学校已经存在毕业年级！');
    //学生信息录入学籍号重复校验
    jQuery.validator.addMethod("dupXJH", function (value, element){
    	if(value == null || value == "")  
            return false || this.optional(element);  
        var obj = this.optional(element);  
        var flag = 1;
        $.ajax({  
            url: "/bp/studentinfoentry/validateXjh.do",  
            data:{sxjh:value,id:this.currentForm.id.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1"){
                	flag = 0;  
	            	 LG.ajax({
	         			url:basepath+'studentinfoentry/loadDupUserByXjh.do',
	         			data : {sxjh:value},
	         			issyn : false,
	         			success : function(data,message) {
	         				$.ligerDialog.close();
	         				LG.showError(message);
	         			}
	         		});
                }
            }
        }); 
        return flag == 0 ? false : true;
    }, "学籍号已存在");
    jQuery.validator.addMethod("dupXJH_mng", function (value, element){
    	if(value == null || value == "")  
            return false || this.optional(element);  
        var obj = this.optional(element);  
        var flag = 1;
        $.ajax({  
            url: "/bp/studentinfomng/validateXjh.do",  
            data:{sxjh:value,id:this.currentForm.usercode.value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1"){
                	flag = 0;  
                	LG.ajax({
	         			url:basepath+'studentinfomng/loadDupUserByXjh.do',
	         			data : {sxjh:value},
	         			issyn : false,
	         			success : function(data,message) {
	         				$.ligerDialog.close();
	         				LG.showError(message);
	         			}
	         		});
                }
            }
        }); 
        return flag == 0 ? false : true
    }, "学籍号已存在");
    //学生信息录入身份证号重复校验
    jQuery.validator.addMethod("dupSFZJH", function (value, element){
    	if(value == null || value == "")  
            return false || this.optional(element);  
        var obj = this.optional(element);  
        var flag = 1;
        $.ajax({  
            url: "/bp/studentinfoentry/validateSfzjh.do",  
            data:{sfzjh:value,id:this.currentForm.id.value,isStu:"0"},  
            async: false,  
            dataType: "json", 
            success: function(data) {
                if(data == "1"){
                	flag = 0;  
                	LG.ajax({
	         			url:basepath+'studentinfoentry/loadDupUserBySfzjh.do',
	         			data : {sfzjh:value},
	         			issyn : false,
	         			success : function(data,message) {
	         				$.ligerDialog.close();
	         				LG.showError(message);
	         			},
	         			error : function(message){
	         				
	         			}
	         		});
                }
            }
        }); 
        return flag == 0 ? false : true
    }, "身份证号已存在");
    
    jQuery.validator.addMethod("dupSFZJH_mng", function (value, element){
    	if(value == null || value == "")  
    		return false || this.optional(element);  
    	var obj = this.optional(element);  
    	var flag = 1;
    	$.ajax({  
    		url: "/bp/studentinfomng/validateSfzjh.do",  
    		data:{sfzjh:value,id:this.currentForm.usercode.value,isStu:"0"},  
    		async: false,  
    		dataType: "json", 
    		success: function(data) {  
    			if(data == "1"){
    				flag = 0;  
    				LG.ajax({
	         			url:basepath+'studentinfomng/loadDupUserBySfzjh.do',
	         			data : {sfzjh:value},
	         			issyn : false,
	         			success : function(data,message) {
	         				$.ligerDialog.close();
	         				LG.showError(message);
	         			}
	         		});
    			}
    		}
    	}); 
    	return flag == 0 ? false : true
    }, "身份证号已存在");
    
    //校验监护人监护人身份证号和当前正在录入学生的身份证号相同
    jQuery.validator.addMethod("valid_sfzjh_eq_stu", function (value, element){
    	//学生有身份证时 进行校验是否和当前学生身份证号相同
    	if(!this.currentForm.sfzjh.readOnly){
    		var stu_sfzjh = this.currentForm.sfzjh.value;
    		if(stu_sfzjh == value){
    			return false;
    		}
    	}
        return true;
    }, "监护人身份证号不能与学生身份证号相同");
    
    //校验监护人监护人身份证号和学生身份证号相同
    jQuery.validator.addMethod("valid_sfzjh", function (value, element){
    	var flag = true;
    	//校验和库里的是否相同
        $.ajax({
            url: "/bp/studentinfoentry/validateSfzjh.do",  
            data:{sfzjh:value,isStu:"1"},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1"){
	            	flag = false;  
	            	LG.ajax({
	         			url:basepath+'studentinfoentry/loadDupUserBySfzjh.do',
	         			data : {sfzjh:value},
	         			issyn : false,
	         			success : function(data,message) {
	         				$.ligerDialog.close();
	         				LG.showError(message);
	         			}
	         		});
                }
            }
        });
        return flag;
    }, "该身份证号为已存在的学生身份证号，请重新输入");
    
  //教师身份证号重复校验
    jQuery.validator.addMethod("jssfzyz_teacher", function (value, element)
    	    {
		    	if(value == null || value == "")  
		            return false || this.optional(element);  
		        var obj = this.optional(element);  
		        var flag = 1;
	            $.ajax({  
	                url: "/bp/informationInput_entry/validateSfzjh_teacher.do",  
	                data:{sfzjh:value,id:$("#customer_id").val()},  
	                async: false,  
	                dataType: "json", 
	                success: function(data) {  
	                    if(data == "1"){
	                    	flag = 0;  
	                    LG.ajax({
		         			url:basepath+'informationInput_entry/sfzjhDuplicatied.do',
		         			data : {sfzjh:value},
		         			issyn : false,
		         			success : function(data,message) {
		         				$.ligerDialog.close();
		         				LG.showError(message);
		         			}
		         		});
	                 }
	                }
	            }); 
	            return flag == 0 ? false : true
    	    }, "身份证号已存在");
    
    //教师身份证号重复校验:正式库
    jQuery.validator.addMethod("jssfzyz_teacher2", function (value, element)
    	    {
		    	if(value == null || value == "")  
		            return false || this.optional(element);  
		        var obj = this.optional(element);  
		        var flag = 1;
	            $.ajax({  
	                url: "/bp/informationInput/validateSfzjh_teacher.do",  
	                data:{sfzjh:value,id:$("#customer_id").val()},  
	                async: false,  
	                dataType: "json", 
	                success: function(data) {  
	                    if(data == "1"){
	                    	flag = 0;  
	                    LG.ajax({
		         			url:basepath+'informationInput/sfzjhDuplicatied.do',
		         			data : {sfzjh:value},
		         			issyn : false,
		         			success : function(data,message) {
		         				$.ligerDialog.close();
		         				LG.showError(message);
		         			}
		         		});
	                 }
	                }
	            }); 
	            return flag == 0 ? false : true
    	    }, "身份证号已存在");
    
    
    //教师英文名验证
    jQuery.validator.addMethod("ywmyz", function (value, element)
    	    {
		    	if(value == null || value == "")  
		            return false || this.optional(element);  
		        var obj = this.optional(element);  
		        var flag = 1;
		        if(!/^[A-Za-z]+$/.test(value)) {
		        	flag = 0;
		        }
	            return flag == 0 ? false : true
    	    }, "只能为英文");
    
    jQuery.validator.addMethod("jssfzyz_zs", function (value, element)
    	    {
		    	if(value == null || value == "")  
		            return false || this.optional(element);  
		        var obj = this.optional(element);  
		        var flag = 1;
	            $.ajax({  
	                url: "/bp/studentinfomng/validateSfzjh.do",  
	                data:{sfzjh:value,id:$("#customer_id").val()},  
	                async: false,  
	                dataType: "json", 
	                success: function(data) {  
	                    if(data == "1")  
	                    	flag = 0;  
	                }
	            }); 
	            return flag == 0 ? false : true
    	    }, "身份证号已存在");
    
    //学生录入-出生日期校验-出生日期与身份证中日期
    jQuery.validator.addMethod("valid_csrq", function (value, element){
    	if(value == null || value == "")  
            return false || this.optional(element);  
    	var stu_sfzjh;
    	if(this.currentForm.sfzjh.value.length == 18){
    		stu_sfzjh = this.currentForm.sfzjh.value.substring(6,14);
    	}else{
    		stu_sfzjh = this.currentForm.sfzjh.value.substring(6,12);
    	}
    	if(stu_sfzjh == null || stu_sfzjh == "")
    		return true;
    	var year = value.toString().substring(0,4);
    	var month = value.toString().substring(5,7);
    	var day = value.toString().substring(8,10);
    	var date = year + month + day;
    	if(stu_sfzjh.toString().length == 6){
    		stu_sfzjh = "19"+stu_sfzjh;
    	}
    	if(date==stu_sfzjh){
    		return true;
    	}else{
    		return false;
    	}
    }, "出生日期与身份证中日期不一致");
    //学生录入-出生日期校验-年龄段校验
    jQuery.validator.addMethod("valid_csrq_2", function (value, element){
    	var rxny = this.currentForm.rxny.value;
    	var currOrgid;
    	if(this.currentForm.orgid){
    		//管理
    		currOrgid = this.currentForm.orgid.value;
    	}else{
    		//录入
    		currOrgid = this.currentForm.classcode.value;
    		if(currOrgid == null || currOrgid == "")
    			return true;
    	}
    	if(rxny == null || rxny == "")
    		return true;
        var obj = this.optional(element);  
        var flag = 1;
        $.ajax({  
            url: "/bp/studentinfoentry/validateCsrq.do",  
            data:{csrq:value,rxny:rxny,currOrgid:currOrgid},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
            	flag = data;  
            }
        }); 
        return flag == 0 ? false : true;
    }, "学生入学年龄不符合该学校的规定入学年龄范围");
    //学生录入-入学年月校验-
    jQuery.validator.addMethod("valid_rxny", function (value, element){
    	var csrq = this.currentForm.csrq.value;
    	if(csrq == null || csrq == "")
    		return true;
    	var currOrgid;
    	if(this.currentForm.orgid){
    		//管理
    		currOrgid = this.currentForm.orgid.value;
    	}else{
    		//录入
    		currOrgid = this.currentForm.classcode.value;
    		if(currOrgid == null || currOrgid == "")
    			return true;
    	}
    	var flag = 1;
    	$.ajax({  
            url: "/bp/studentinfoentry/validateCsrq.do",  
            data:{csrq:csrq,rxny:value,currOrgid:currOrgid},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
            	flag = data;  
            }
        }); 
    	return flag == 0 ? false : true;
    }, "学生入学年龄不符合该学校的规定入学年龄范围");
    
    //字母数字
    jQuery.validator.addMethod("alnum", function (value, element)
    {
        return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
    }, "只能包括英文字母和数字");

    //字母数字
    jQuery.validator.addMethod("letter", function (value, element)
    {
        return this.optional(element) || /^[a-zA-Z]+$/.test(value);
    }, "只能输入英文字母");
    
   // 手机号码验证      
    jQuery.validator.addMethod("isMobile", function(value, element) {       
	    var length = value.length;   
	    var mobile = /^[1][358][0-9]{9}$/;   
	    return this.optional(element) || (length == 11 && mobile.test(value));       
    }, "请正确填写您的手机号码");   
    
    
    
    
    // 电话号码验证   
    jQuery.validator.addMethod("telephone", function (value, element)
    {
        var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
        return this.optional(element) || (tel.test(value));
    }, "请正确填写电话号码(区号-号码)");
    
    // 电话号码包括手机号验证   
    jQuery.validator.addMethod("phone", function (value, element)
    {
    var tel = /(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)|(13\d{9}$)|(15[0135-9]\d{8}$)|(18[267]\d{8}$)/;
    return this.optional(element) || (tel.test(value));
    }, "请正确填写电话号码");
    
    // 邮政编码验证
    jQuery.validator.addMethod("zipcode", function (value, element)
    {
        var tel = /^[1-9][0-9]{5}$/;
        return this.optional(element) || (tel.test(value));
    }, "请正确填写邮政编码");
    
    
    
    //email 验证
    jQuery.validator.addMethod("email", function (value, element) {
        var tel = /^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/;
        return this.optional(element) || (tel.test(value));
    }, "请正确填写邮箱号码");
    
    
    // 汉字
    jQuery.validator.addMethod("chcharacter", function (value, element)
    {
        var tel = /^[\u4e00-\u9fa5]+$/;
        return this.optional(element) || (tel.test(value));
    }, "请输入汉字");



    // QQ
    jQuery.validator.addMethod("qq", function (value, element)
    {
        var tel = /^[1-9][0-9]{4,}$/;
        return this.optional(element) || (tel.test(value));
    }, "请输入正确的QQ");

    
    // 用户名
    jQuery.validator.addMethod("username", function (value, element)
    {
        return this.optional(element) || /^[a-zA-Z][a-zA-Z0-9_]+$/.test(value);
    }, "用户名格式不正确");

    
    
    //身份证验证
    jQuery.validator.addMethod("isIdCardNo", function(value, element) {      
    	 
    	  return this.optional(element) ||  $.idcardvalidate(value);       
    },  "身份证号码校验错误(位数/出生日期/非法字符)!");

    //判断位置结构是否为3级
    jQuery.validator.addMethod("findNodepath", function(value, element) {      
    	var flag = 0;
    
        return flag == 0 ? false : true;
  	     
    },  " 请选择正确的位置结构!");
    
    //IP地址验证
    jQuery.validator.addMethod("ip", function(value, element) { 
    	var ip = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; 
    	return this.optional(element) || (ip.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256)); 
	}, "Ip地址格式错误"); 
    
    //端口验证
    jQuery.validator.addMethod("port", function(value, element) { 
    	var port = /^\d{0,5}$/; 
    	return this.optional(element) ||( (port.test(value)&&value<65536) ); 
	}, "端口格式错误"); 
    
    //日期验证
    jQuery.validator.addMethod("_date", function(value, element) {      
    	var flag = 1;
        $.ajax({  
            url: "/bp/schoolController/validateDate.do",  
            data:{date:value},  
            async: false,  
            dataType: "json", 
            success: function(data) {  
                if(data == "1")  
                	flag = 0;  
            }
        }); 
        return flag == 0 ? false : true;
  	     
    },  "输入日期不能大于当天!");

    
})(jQuery);